import axios from "axios";
import index from "./router";
//import ElementPlus from "element-plus"
import { ElMessage } from "element-plus";


axios.defaults.baseURL = "http://124.220.200.126:8080"
// axios.defaults.baseURL = "http://localhost:8080"



const request = axios.create({
    timeout: 5000,
    // headers: {
    //     'Content-Type': "application/json; charset=utf-8"
    // }
})

request.interceptors.request.use(config => {
    config.headers['Authorization'] = localStorage.getItem("token");
    return config;
})

request.interceptors.response.use(response => {
        let res = response.data;
        console.log("response = ", response);
        console.log("response.data.code = ", response.data.code);
        switch (res.code) {
            case 200:
                ElMessage.success({showClose: true, message : response.data.msg});
                return response
            case 303:
                ElMessage.error({showClose: true, message: res.msg + ", 错误类型:303登录失败"});
                return Promise.reject(res.msg);
            case 400:
                ElMessage.error({showClose: true, message: res.msg + ", 错误类型:400请求参数出错"});
                return Promise.reject(res.msg);
            case 401:
                ElMessage.error({showClose: true, message: res.msg + ", 错误类型:401没有登录"});
                return Promise.reject(res.msg);
            case 403:
                ElMessage.error({showClose: true, message: res.msg + ", 错误类型:403没有权限"});
                return Promise.reject(res.msg);
            case 410:
                ElMessage.error({showClose: true, message: res.msg + ", 错误类型:410已被删除"});
                return Promise.reject(res.msg);
            case 423:
                ElMessage.error({showClose: true, message: res.msg + ", 错误类型:423已被锁定"});
                return Promise.reject(res.msg);
            case 500:
                ElMessage.error({showClose: true, message: res.msg + ", 错误类型:500服务器出错"});
                return Promise.reject(res.msg);
            case 4001:
                ElMessage.error({showClose: true, message: res.msg + ", 错误类型:4001异常"});
                return Promise.reject(res.msg);
        }
        // if (response.data.code === 200) {
        //     Element.Message.success({showClose: true, message : response.data.msg});
        //     return response
        // } else {
        //     Element.Message.error(!res.msg ? '系统异常' : res.msg);
        //     return Promise.reject(response.data.msg);
        // }
    }, error => {
        console.log("error = ", error);
        if (error.response.data) {
            error.message = error.response.data.msg;
        }
        if (error.response.status === 401) {
            index.push('/login');
        }
        ElMessage.error(error.message, {duration:3000})
        return Promise.reject(error);
    }
)

export default request



// "use strict";
//
// import Vue, {createApp} from 'vue';
// import axios from "axios";
// import App from './App'
//
// // Full config:  https://github.com/axios/axios#request-config
// // axios.defaults.baseURL = process.env.baseURL || process.env.apiUrl || '';
// // axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
// // axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
//
// let config = {
//     baseURL: "http://localhost:8080/",
//     timeout: 60 * 1000, // Timeout
//     //withCredentials: true, // Check cross-site Access-Control
// };
//
// const _axios = axios.create(config);
//
// _axios.interceptors.request.use(
//     function(config) {
//         // Do something before request is sent
//         return config;
//     },
//     function(error) {
//         // Do something with request error
//         return Promise.reject(error);
//     }
// );
//
// // Add a response interceptor
// _axios.interceptors.response.use(
//     function(response) {
//         // Do something with response data
//         return response;
//     },
//     function(error) {
//         // Do something with response error
//         return Promise.reject(error);
//     }
// );
//
// Plugin.install = function(Vue, options) {
//     Vue.axios = _axios;
//     window.axios = _axios;
//     Object.defineProperties(Vue.prototype, {
//         axios: {
//             get() {
//                 return _axios;
//             }
//         },
//         $axios: {
//             get() {
//                 return _axios;
//             }
//         },
//     });
// };
//
// // const app =createApp(App)
// // app.config.globalProperties.Plugin = Plugin
// //
// export default axios;
